﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio.Auxiliar;
using Negocio.Cabelo;
using Negocio.Pele;
using Negocio.PerfilCompra;
using Negocio.Usuario;

namespace qbaproject.Usuario.Editar
{
    public partial class editarUsuario : System.Web.UI.Page
    {
        public int idUsuario;
        public string nmUsuario;
        public string dsUsuario;
        public int idHash;
        public DateTime? dtNascimento;
        public string teEmail;
        public string teSenha;
        public string teUrl;
        public string teFoto;
        public DateTime? dtCadastro;
        public string nrCodigoAtivacao;
        public int idTipoPele;
        public int idCorPele;
        public int idCorCabelo;
        public int idTipoCabelo;
        public string teNome;
        public string teSobrenome;
        public string csSexo; // deve ser M ou F
        public int idTipoUsuario;
        public int idPerfilCompra;
        public string nomeArquivo;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.QueryString["id"] != null)
                {
                    hdfIdUsuario.Value = Request.QueryString["id"].ToString();
                    preencherTela();
                    carregarDdl();

                }
            }
        }

        public void carregarDdl()
        {
            var obNTipoPele = new NTipoPele();
            var obNCorPele = new NCorPele();
            var obNTipoCabelo = new NTipoCabelo();
            var obNCorCabelo = new NCorCabelo();
            var obNTipoUsuario = new NTipoUsuario();
            var obNPerfilCompra = new NPerfilCompra();

            //Carregar tipo de pele
            ddlTiposPele.DataSource = obNTipoPele.pegarTiposPele();
            ddlTiposPele.DataBind();
            ddlTiposPele.Items.Insert(0, new ListItem("Selecionar o tipo de pele", "0"));

            //Carregar cor de pele
            ddlCoresPele.DataSource = obNCorPele.pegarCoresPele();
            ddlCoresPele.DataBind();
            ddlCoresPele.Items.Insert(0, new ListItem("Selecionar a cor de pele", "0"));

            //Carregar tipo de cabelo
            ddlTiposCabelo.DataSource = obNTipoCabelo.pegarTiposCabelo();
            ddlTiposCabelo.DataBind();
            ddlTiposCabelo.Items.Insert(0, new ListItem("Selecionar o tipo de cabelo", "0"));

            //Carregar cor de cabelo
            ddlCoresCabelo.DataSource = obNCorCabelo.pegarCoresCabelo();
            ddlCoresCabelo.DataBind();
            ddlCoresCabelo.Items.Insert(0, new ListItem("Selecionar o cor de cabelo", "0"));

            //Carregar tipo de usuario
            ddlTiposUsuarios.DataSource = obNTipoUsuario.pegarTodosTiposUsuarios();
            ddlTiposUsuarios.DataBind();
            ddlTiposUsuarios.Items.Insert(0, new ListItem("Selecionar o tipo de usuário", "0"));
            ddlTiposUsuarios.SelectedValue = Convert.ToString(4);

            //Carregar tipo de usuario
            ddlPerfisCompra.DataSource = obNPerfilCompra.pegarPerfisCompra();
            ddlPerfisCompra.DataBind();
            ddlPerfisCompra.Items.Insert(0, new ListItem("Selecionar o perfil de compra", "0"));
        }

        protected void lnk_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Usuario/Consultar/consultarUsuario.aspx");
        }

        protected void lkbAlterar_Click(object sender, EventArgs e)
        {

            if (verificarForm())
            {
                var obNUsuario = new NUsuario();

                var idUsuario = hdfIdUsuario.Value;

                
                
                obNUsuario.nmUsuario = txtNmUsuario.Text;
                obNUsuario.dsUsuario = txtDsUsuario.Text;
                obNUsuario.teUrl = txtTeUrl.Text;
                obNUsuario.teEmail = txtTeEmail.Text;
                obNUsuario.teNome = txtTeNome.Text;
                obNUsuario.teSobrenome = txtTeSobrenome.Text;
                obNUsuario.csSexo = rblCsSexo.SelectedItem.Value;
                obNUsuario.idCorCabelo = Convert.ToInt32(ddlCoresCabelo.SelectedValue);
                obNUsuario.idCorPele = Convert.ToInt32(ddlCoresPele.SelectedValue);
                obNUsuario.idTipoCabelo = Convert.ToInt32(ddlTiposCabelo.SelectedValue);
                obNUsuario.idTipoPele = Convert.ToInt32(ddlTiposPele.SelectedValue);
                obNUsuario.idTipoUsuario = Convert.ToInt32(ddlTiposUsuarios.SelectedValue);
                obNUsuario.idPerfilCompra = Convert.ToInt32(ddlPerfisCompra.SelectedValue);

                if (txtTeFoto.HasFile)
                {
                    nomeArquivo = txtTeFoto.FileName;
                }
                else
                {
                    var obNUsuarioAntigo = new NUsuario();
                    obNUsuarioAntigo.idUsuario = Convert.ToInt32(hdfIdUsuario.Value);
                    obNUsuarioAntigo.pegarUsuarioPorId();
                    nomeArquivo = obNUsuarioAntigo.teFoto;
                }
                

                var caminho = Server.MapPath("../../Imagens/Usuario/" + idUsuario + Path.GetExtension(nomeArquivo));
                if (txtTeFoto.HasFile)
                {

                    if (File.Exists(caminho))
                    {
                        File.Delete(caminho);

                    }
                    txtTeFoto.SaveAs(caminho);
                    obNUsuario.teFoto = idUsuario + Path.GetExtension(nomeArquivo);
                }
                else if (File.Exists(caminho))
                {
                    File.Delete(caminho);
                    obNUsuario.teFoto = null;
                }


                if (obNUsuario.Alterar(Convert.ToInt32(hdfIdUsuario.Value)))
                {
                    divMsnEditarSucesso.Visible = true;
                    divMsnEditarAtencao.Visible = false;
                }
                else
                {
                    divMsnEditarSucesso.Visible = false;
                    divMsnEditarAtencao.Visible = true;
                }
            }
        }

        public void preencherTela()
        {
            var obNUsuario = new NUsuario();
            obNUsuario.idUsuario = Convert.ToInt32(hdfIdUsuario.Value);
            obNUsuario.pegarUsuarioPorId();
            txtDsUsuario.Text = obNUsuario.dsUsuario;
            txtNmUsuario.Text = obNUsuario.nmUsuario;
            txtDsUsuario.Text = obNUsuario.dsUsuario;
            txtTeNome.Text = obNUsuario.teNome;
            txtTeSobrenome.Text = obNUsuario.teSobrenome;
            txtTeUrl.Text = obNUsuario.teUrl;
            txtTeEmail.Text = obNUsuario.teEmail;
            if (!string.IsNullOrEmpty(obNUsuario.teFoto))
            {
                imgTeFoto.ImageUrl = "~/Imagens/Usuario/" + obNUsuario.teFoto;                
            }
            rblCsSexo.SelectedValue = obNUsuario.csSexo;
            ddlCoresCabelo.SelectedValue = Convert.ToString(obNUsuario.idCorCabelo);
            ddlCoresPele.SelectedValue = Convert.ToString(obNUsuario.idCorPele);
            ddlPerfisCompra.SelectedValue = Convert.ToString(obNUsuario.idPerfilCompra);
            ddlTiposCabelo.SelectedValue = Convert.ToString(obNUsuario.idTipoCabelo);
            ddlTiposPele.SelectedValue = Convert.ToString(obNUsuario.idTipoPele);
            ddlTiposUsuarios.SelectedValue = Convert.ToString(obNUsuario.idTipoUsuario);


        }

        public bool verificarForm()
        {
            var boForm = true;

            idTipoCabelo = Convert.ToInt32(ddlTiposCabelo.SelectedValue);
            if (idTipoCabelo == 0)
            {
                boForm = false;
                lblDdlTipoCabeloObrigatoria.Text = "O tipo de cabelo é obrigatório!";
            }
            else
            {
                lblDdlTipoCabeloObrigatoria.Text = "";
            }

            idCorCabelo = Convert.ToInt32(ddlCoresCabelo.SelectedValue);
            if (idCorCabelo == 0)
            {
                boForm = false;
                lblDdlCorCabeloObrigatoria.Text = "A cor do cabelo é obrigatória!";
            }
            else
            {
                lblDdlCorCabeloObrigatoria.Text = "";
            }

            idTipoPele = Convert.ToInt32(ddlTiposPele.SelectedValue);
            if (idTipoPele == 0)
            {
                boForm = false;
                lblDdlTipoPeleObrigatoria.Text = "O tipo de pele é obrigatório!";
            }
            else
            {
                lblDdlTipoPeleObrigatoria.Text = "";
            }

            idCorPele = Convert.ToInt32(ddlCoresPele.SelectedValue);
            if (idCorPele == 0)
            {
                boForm = false;
                lblDdlCorPeleObrigatoria.Text = "A cor da pele é obrigatória!";
            }
            else
            {
                lblDdlCorPeleObrigatoria.Text = "";
            }

            idPerfilCompra = Convert.ToInt32(ddlPerfisCompra.SelectedValue);
            if (idPerfilCompra == 0)
            {
                boForm = false;
                lblDdlPerfilCompraObrigatoria.Text = "O perfil de compra é obrigatório!";
            }
            else
            {
                lblDdlPerfilCompraObrigatoria.Text = "";
            }

            idTipoUsuario = Convert.ToInt32(ddlTiposUsuarios.SelectedValue);
            if (idTipoUsuario == 0)
            {
                boForm = false;
                lblDdlTipoUsuarioObrigatoria.Text = "O tipo de usuário é obrigatório!";
            }
            else
            {
                lblDdlTipoUsuarioObrigatoria.Text = "";
            }

            nmUsuario = txtNmUsuario.Text;
            if (string.IsNullOrEmpty(nmUsuario))
            {
                boForm = false;
                lblNmUsuarioObrigatorio.Text = "O nome de usuario é obrigatório!";
            }
            else
            {
                lblNmUsuarioObrigatorio.Text = "";
            }

            if (string.IsNullOrEmpty(txtDsUsuario.Text))
            {
                boForm = false;
                lblDsUsuarioObrigatoria.Text = "A descrição do usuario é obrigatória!";
            }
            else
            {
                lblDsUsuarioObrigatoria.Text = "";
            }

            if (string.IsNullOrEmpty(txtTeNome.Text))
            {
                boForm = false;
                lblTeNomeObrigatorio.Text = "O primeiro nome é obrigatório!";
            }
            else
            {
                lblTeNomeObrigatorio.Text = "";

            }

            if (string.IsNullOrEmpty(txtTeSobrenome.Text))
            {
                boForm = false;
                lblTeSobrenomeObrigatorio.Text = "O sobrenome é obrigatório!";
            }
            else
            {
                lblTeSobrenomeObrigatorio.Text = "";

            }

            if (string.IsNullOrEmpty(txtTeEmail.Text))
            {
                boForm = false;
                lblTeEmailObrigatorio.Text = "O e-mail é obrigatório!";
            }
            else
            {
                lblTeEmailObrigatorio.Text = "";

            }
            return boForm;
        }
    }
}